package co.inventario.modelo.negocio;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;

import co.inventario.datos.sqlserver.ConceptoKardexDAOSQLServer;
import co.inventario.datos.sqlserver.MovimientoKardexDAOSQLServer;
import co.inventario.entidad.ConceptoKardexDTO;
import co.inventario.entidad.MovimientoKardexDTO;

public class ConceptoKardexNegocio {

	public void crear(ConceptoKardexDTO conceptoKardexDTO, Connection connection) throws Exception, SQLException {
		ConceptoKardexDAOSQLServer conceptoKardexDAOSQLServer = new ConceptoKardexDAOSQLServer();
		ConceptoKardexDTO conceptoKardexDTOConsultado = conceptoKardexDAOSQLServer.consultarPorNombre(conceptoKardexDTO, connection);
		if (conceptoKardexDTOConsultado == null) {
			conceptoKardexDAOSQLServer.crear(conceptoKardexDTO, connection);
		} else {
			throw new Exception("El Concepto de kardex que intenta crear, ya existe.");
		}
	}

	public void actualizar(ConceptoKardexDTO conceptoKardexDTO, Connection connection) throws Exception, SQLException {
		ConceptoKardexDAOSQLServer conceptoKardexDAOSQLServer = new ConceptoKardexDAOSQLServer();
		ConceptoKardexDTO conceptoKardexDTOConsultado = conceptoKardexDAOSQLServer.consultarPorCodigo(conceptoKardexDTO, connection);
		if (conceptoKardexDTOConsultado != null) {
			conceptoKardexDAOSQLServer.actualizar(conceptoKardexDTO, connection);
		} else {
			throw new Exception("El Concepto de kardex que intenta actualizar, no existe.");
		}
	}

	public ConceptoKardexDTO consultarPorCodigo(ConceptoKardexDTO conceptoKardexDTO, Connection connection) throws Exception, SQLException {
		ConceptoKardexDAOSQLServer conceptoKardexDAOSQLServer = new ConceptoKardexDAOSQLServer();
		ConceptoKardexDTO conceptoKardexDTOConsultado = conceptoKardexDAOSQLServer.consultarPorCodigo(conceptoKardexDTO, connection);
		return conceptoKardexDTOConsultado;
	}

	public ArrayList<ConceptoKardexDTO> consultarTodo(Connection connection) throws Exception, SQLException {
		ConceptoKardexDAOSQLServer conceptoKardexDAOSQLServer = new ConceptoKardexDAOSQLServer();
		MovimientoKardexDAOSQLServer movimientoKardexDAOSQLServer = new MovimientoKardexDAOSQLServer();
		ArrayList<ConceptoKardexDTO> conceptoKardexDTOLista = conceptoKardexDAOSQLServer.consultarTodo(connection);
		MovimientoKardexDTO movimientoKardexDTO = null;
		for (ConceptoKardexDTO conceptoKardexDTO : conceptoKardexDTOLista) {
			movimientoKardexDTO = movimientoKardexDAOSQLServer.consultarPorCodigo(conceptoKardexDTO.getMovimientoKardexDTO(), connection);
			conceptoKardexDTO.setMovimientoKardexDTO(movimientoKardexDTO);
		}
		return conceptoKardexDTOLista;
	}
}
